package com.glp.work.flow.dto.request;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
 * 流程及任务分配信息
 *
 * @author pengjia
 * @version 2020年5月18日 下午1:52:48
 */
@Data
@ApiModel("流程及任务分配信息")
public class ProcTaskAssignInfoDTO implements Serializable {

    private static final long serialVersionUID = 1016185579015614414L;
    @ApiModelProperty(value = "当前用户编号")
    private String userNo;

    @ApiModelProperty(value = "流程模型ID")
    private String modelId;

    @ApiModelProperty(value = "任务定义ID")
    private String taskDefId;

    @ApiModelProperty(value = "任务定义名称")
    private String taskDefKey;

    @ApiModelProperty(value = "流程定义ID")
    private String procDefId;

    @ApiModelProperty(value = "流程定义KEY")
    private String procDefKey;

    @ApiModelProperty(value = "任务分配用户信息")
    private List<ProcTaskAssignUserInfoDTO> userInfos = new ArrayList<>();

    @ApiModelProperty(value = "任务分配角色信息")
    private List<ProcTaskAssignRoleInfoDTO> roleInfos = new ArrayList<>();

    @ApiModelProperty(value = "任务分配可驳回节点信息")
    private List<ProcTaskNodeInfoDTO> nodeInfos = new ArrayList<>();

    @ApiModelProperty(value = "分配类型")
    private String type;

    /**
     * 关联表单
     */
    @ApiModelProperty(value = "关联表单")
    private String taskDefForm;
    /**
     * 节点类型
     */
    @ApiModelProperty(value = "节点类型")
    private String taskDefTtpe;

    /**
     * 任务分配规则
     */
    @ApiModelProperty(value = "任务分配规则")
    private String taskDefRule;

    /**
     * 是否可批量审批
     */
    @ApiModelProperty(value = "是否可批量审批")
    private String taskDefBatch;

    /**
     * 通知类型0：关，1：开
     */
    @ApiModelProperty(value = "通知类型0：关，1：开")
    private String notification;
    /**
     * 订阅提醒类型  10 待审批通知，20 通过通知，30 拒绝通知，40 驳回通知
     */
    @ApiModelProperty(value = "订阅提醒类型  10 待审批通知，20 通过通知，30 拒绝通知，40 驳回通知")
    private String notificationType;
    /**
     * 通知提交人 0不通知1通知
     */
    @ApiModelProperty(value = "通知提交人 0不通知1通知")
    private String noticeCreateUserSwitch;

    @ApiModelProperty(value = "是否发送短信验证码0：关，1：开")
    private String sms;

    @ApiModelProperty(value = "审批页面'禁用'的操作，PASS：通过，FAIL：拒绝，REJECT：驳回")
    private String optionType;

    @ApiModelProperty(value = "订阅分配用户信息")
    private List<ProcTaskAssignUserInfoDTO> subscriptionUserInfos = new ArrayList<>();

    @ApiModelProperty(value = "订阅分配角色信息")
    private List<ProcTaskAssignRoleInfoDTO> subscriptionRoleInfos = new ArrayList<>();

    public String getTaskDefRule() {
        if (taskDefRule != null && !"".equals(taskDefRule)) {
            return taskDefRule;
        }
        return "0";
    }
}
